উদাহরণ সহ Batch Processing এর ব্যবহার

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এ Batch Processing |
79
79

Spring JDBC এ Batch Processing ব্যবহার করার মাধ্যমে একাধিক SQL অপারেশন (যেমন, ইনসার্ট, আপডেট, ডিলিট) একসাথে কার্যকর করা যায়। এতে করে ডেটাবেসের সাথে যোগাযোগের সংখ্যা কমে যায় এবং পারফর্মেন্স বৃদ্ধি পায়, বিশেষ করে যখন অনেক রেকর্ড একসাথে প্রক্রিয়া করতে হয়। নিচে উদাহরণ সহ ব্যাচ প্রোসেসিং ব্যবহার করার পদ্ধতি দেখানো হল।

Batch Processing উদাহরণ:

ধরা যাক আমাদের একটি Employee টেবিল রয়েছে, যেখানে কর্মীদের তথ্য ইনসার্ট করতে হবে। আমাদের উদ্দেশ্য হল একাধিক কর্মীকে একবারে ইনসার্ট করা।

Step 1: application.properties ফাইলে ডেটাবেস কনফিগারেশন

প্রথমে, application.properties ফাইলে ডেটাবেস কনফিগারেশন করতে হবে:

# DataSource Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=root
spring.datasource.password=root_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Connection Pool Configuration (HikariCP)
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.connection-timeout=30000

# Hibernate Configuration (Optional)
spring.jpa.hibernate.ddl-auto=update

Step 2: Employee ক্লাস তৈরি করুন:

এখানে একটি Employee ক্লাস তৈরি করা হয়েছে, যা ডেটাবেস টেবিলের সাথে সম্পর্কিত:

public class Employee {
    private int id;
    private String name;
    private double salary;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

Step 3: Batch Processing কোড লিখুন:

এখন Spring JDBC এর JdbcTemplate ব্যবহার করে ব্যাচ প্রক্রিয়া করব। এই উদাহরণে আমরা তিনটি কর্মীকে একসাথে ইনসার্ট করব।

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

@Repository
public class EmployeeRepository {

    private JdbcTemplate jdbcTemplate;

    // Constructor injection for JdbcTemplate
    public EmployeeRepository(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void insertEmployeesBatch() {
        String sql = "INSERT INTO employee (id, name, salary) VALUES (?, ?, ?)";

        // Batch data to be inserted
        List<Object[]> batchArgs = new ArrayList<>();
        batchArgs.add(new Object[] {1, "John Doe", 50000});
        batchArgs.add(new Object[] {2, "Jane Smith", 55000});
        batchArgs.add(new Object[] {3, "James Bond", 60000});

        // Perform batch update
        jdbcTemplate.batchUpdate(sql, batchArgs);
    }
}

Step 4: Service Layer এ insertEmployeesBatch() মেথড কল করুন:

এখন, EmployeeService ক্লাসে এই ব্যাচ ইনসার্ট মেথডটি কল করা হবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class EmployeeService {

    private final EmployeeRepository employeeRepository;

    @Autowired
    public EmployeeService(EmployeeRepository employeeRepository) {
        this.employeeRepository = employeeRepository;
    }

    public void batchInsertEmployees() {
        employeeRepository.insertEmployeesBatch();
    }
}

Step 5: Controller তৈরি করুন (Optional):

আপনি যদি এই ফাংশনালিটি ওয়েব ইন্টারফেসে ব্যবহার করতে চান, তবে Spring MVC Controller তৈরি করতে পারেন:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmployeeController {

    private final EmployeeService employeeService;

    @Autowired
    public EmployeeController(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    @GetMapping("/insert-batch-employees")
    public String insertBatchEmployees() {
        employeeService.batchInsertEmployees();
        return "Batch Insert Completed!";
    }
}

Step 6: Spring Boot Application রান করুন:

এখন আপনি Spring Boot অ্যাপ্লিকেশনটি রান করতে পারেন এবং /insert-batch-employees URL এ গিয়ে ব্যাচ ইনসার্ট পরীক্ষা করতে পারেন।


Batch Processing এর সুবিধা:

  1. পারফর্মেন্স বৃদ্ধি: একাধিক রেকর্ড একসাথে ইনসার্ট করা হলে ডেটাবেসের সাথে যোগাযোগের সংখ্যা কমে যায়, যা পারফর্মেন্সে উল্লেখযোগ্য উন্নতি ঘটায়।
  2. কম নেটওয়ার্ক রাউন্ড-ট্রিপ: একাধিক SQL কমান্ড একসাথে প্রেরণ করা হয়, ফলে প্রতিটি কমান্ডের জন্য আলাদাভাবে নেটওয়ার্ক রাউন্ড-ট্রিপ হয় না।
  3. লোড কমানো: ডেটাবেস সার্ভারের ওপর কম লোড পড়ে, কারণ একাধিক কমান্ড একসাথে প্রেরণ করা হয়।
  4. ডেটাবেসের সাথে সিস্টেমের সমন্বয়: বিশেষ করে যখন অনেক রেকর্ড ইনসার্ট, আপডেট বা ডিলিট করতে হয়, তখন এটি সময় বাঁচাতে সাহায্য করে।

Batch Processing এর সীমাবদ্ধতা:

  • ব্যাচ সাইজ: খুব বড় ব্যাচ সাইজ ব্যবহার করলে মেমরি প্রয়োগ বেশি হতে পারে, তাই সঠিক ব্যাচ সাইজ নির্ধারণ করা উচিত।
  • ব্যাচ ফেইলিউর: যদি একটি ব্যাচের মধ্যে একটি SQL স্টেটমেন্ট ব্যর্থ হয়, পুরো ব্যাচটি ব্যর্থ হতে পারে।

এভাবে Spring JDBC এর Batch Processing ব্যবহার করে আপনি ডেটাবেসে কার্যকরী এবং দক্ষভাবে ডেটা প্রক্রিয়া করতে পারেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion